package com.hust360.percent.pojo;

import java.io.Serializable;
import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * 
 * 店铺的实体类
 */
public abstract class Shop implements Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = -5546555135289306148L;

	/**
	 * 本地数据库中表的名字
	 */
	public static final String TABLE_NAME = "shop";

	/**
	 * 店铺的id
	 */
	public Long id;

	public static final String ID = "id";

	/**
	 * 店铺的名称
	 **/
	public String name;

	public static final String NAME = "name";

	/**
	 * 分店名字
	 */
	public String subname;
	public static final String SUBNAME = "subname";

	/**
	 * 店铺的品牌
	 **/
	public Long brandid;

	public static final String BRAND_ID = "brandid";

	/**
	 * 店铺地址
	 */
	public String address;

	public static final String ADDRESS = "address";

	// /**
	// * 店铺平均分
	// */
	// private Long liked;
	//
	// public static final String LIKED = "liked";

	/**
	 * 店铺的电话号码
	 */
	public String telephone;

	public static final String TELEPHONE = "telephone";

	/**
	 * 图片logo的名字
	 */
	public String logoimg;

	public static final String LOGO_IMG = "logoimg";

	/**
	 * logo图片的url地址
	 */
	public String logoURL;
	public static final String LOGO_URL = "logoURL";

	/**
	 * 地点信息纬度
	 */
	public Double longitude;

	public static final String LONGITUDE = "longitude";

	/**
	 * 地点信息纬度
	 */
	public Double latitude;
	public static final String LATITUDE = "latitude";

	/**
	 * 店铺所在城市
	 */
	public Long cityid;

	public static final String CITY_ID = "cityid";

	/**
	 * 店铺所在的商城
	 */
	public Long areaid;

	public static final String AREA_ID = "areaid";

	/**
	 * 店铺类型
	 */
	public Integer type;
	public static String TYPE = "type";

	/**
	 * 修改时间
	 */
	public Date moddate;
	public static final String MODIFY_DATE = "moddate";

	/**
	 * 抽象方法，获取SuperShop所有的打折信息的列表
	 */
	public abstract List<Discount> getDiscountInfos();

	/**
	 * 抽象方法，获得SuperShop的收藏总人数
	 */
	public abstract Long getLiked();
	
	/**
	 * 判断用户是否收藏了自己
	 */
	public abstract boolean isLiked(User user);
	

	public static final String[] columns = { ID, NAME, SUBNAME, BRAND_ID,
			ADDRESS, AREA_ID, TELEPHONE, LOGO_IMG, LOGO_URL, LONGITUDE,
			LATITUDE, CITY_ID, TYPE, MODIFY_DATE };

	/**
	 * 获取shop对象实例的接口
	 */
	public static interface ShopDAO {

		public void save(Shop shop);

		/**
		 * 抽象方法, 通过shop的id获得一个SuperShop对象
		 */
		public Shop findById(Long id);

		public long deleteById(Long id);

		/**
		 * 抽象方法，通过一个Map<String, String>的对象获得
		 * 一个SuperShop的List,其中Map中的Key是SuperShop成员变量的名字之一 Value是对应的值。
		 */
		public List<Shop> findWithMap(Map<String, String> map);
		
		/**
		 * 通过area的id获取一个shop的list
		 */
		public  List<Shop> findByAreaId(Long shopid) ;
	}

}
